'''
JS
function Find(target, array)
{
    // write code here
    return array.some(arr=>arr.some(e=>e===target))
}

从左下角元素往上查找，右边元素是比这个元素大，上边是的元素比这个元素小。
于是，target比这个元素小就往上找，比这个元素大就往右找。如果出了边界，则说明二维数组中不存在target元素。
'''
# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
        # write code here
        rows = len(array) - 1
        cols= len(array[0]) - 1
        i = rows
        j = 0
        while j<=cols and i>=0:
            if target<array[i][j]:
                i -= 1
            elif target>array[i][j]:
                j += 1
            else:
                return True
        return False
'''
不够严谨，并不一定上一行的这个数就一定比同位置的大或者小，每行的增长可能并不一样
'''
# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
        # write code here
        length = len(array)
        for i in range(length):
            if target in array[i]:
                return True
        return False